/*
 *    Copyright 2008-2009 The Digester Tools Team
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package com.digestertools.annotations;

import org.testng.annotations.DataProvider;

import com.digestertools.annotations.addressbook.Address;
import com.digestertools.annotations.addressbook.AddressBook;
import com.digestertools.annotations.addressbook.Person;
import com.digestertools.annotations.foo.Bar;
import com.digestertools.annotations.foo.Foo;
import com.digestertools.annotations.rss.Channel;
import com.digestertools.annotations.rss.Image;
import com.digestertools.annotations.rss.Item;
import com.digestertools.annotations.servletbean.ServletBean;

/**
 * 
 * @author Simone Tripodi
 * @version $Id: DigesterDataProvider.java 357 2009-12-16 20:00:36Z simone.tripodi $
 */
public final class DigesterDataProvider {

    @DataProvider(name = "digester-provider")
    public static Object[][] createDigesterData() {
        /*  */
        ServletBean servletBean = new ServletBean();
        servletBean.setServletName("action");
        servletBean.setServletClass("org.apache.struts.action.ActionServlet");
        servletBean.addInitParam("application",
                "org.apache.struts.example.ApplicationResources");
        servletBean.addInitParam("config", "/WEB-INF/struts-config.xml");

        /* ---- */
        Foo foo = new Foo();
        foo.setFooName("The Parent");
        Bar bar = new Bar();
        bar.setId(123);
        bar.setTitle("The First Child");
        foo.addBar(bar);
        bar = new Bar();
        bar.setId(456);
        bar.setTitle("The Second Child");
        foo.addBar(bar);

        /* ---- */
        AddressBook addressBook = new AddressBook();

        Person person = new Person();
        person.setId(1);
        person.setCategory("acquaintance");
        person.setName("Gonzo");
        person.addEmail("business", "gonzo@muppets.com");

        Address address = new Address();
        address.setType("home");
        address.setStreet("123 Maine Ave.");
        address.setCity("Las Vegas");
        address.setState("NV");
        address.setZip("01234");
        address.setCountry("USA");
        person.addAddress(address);

        address = new Address();
        address.setType("business");
        address.setStreet("234 Maple Dr.");
        address.setCity("Los Angeles");
        address.setState("CA");
        address.setZip("98765");
        address.setCountry("USA");
        person.addAddress(address);

        addressBook.addPerson(person);

        person = new Person();
        person.setId(2);
        person.setCategory("rolemodel");
        person.setName("Kermit");
        person.addEmail("business", "kermit@muppets.com");
        person.addEmail("home", "kermie@acme.com");

        address = new Address();
        address.setType("business");
        address.setStreet("987 Brown Rd");
        address.setCity("Las Cruces");
        address.setState("NM");
        address.setZip("75321");
        address.setCountry("USA");
        person.addAddress(address);

        addressBook.addPerson(person);

        /* ---- */
        Channel channel = new Channel();
        channel.setTitle("Apache");
        channel.setLink("http://www.apache.org");
        channel.setDescription("The Apache Software Foundation");
        channel.setLanguage("en-US");

        Image image = new Image();
        image.setTitle("Apache");
        image.setUrl("http://jakarta.apache.org/images/jakarta-logo.gif");
        image.setLink("http://jakarta.apache.org");
        image.setDescription(
                "The Jakarta project. Open source, serverside java.");
        image.setWidth(505);
        image.setHeight(480);
        channel.setImage(image);

        Item item = new Item();
        item.setTitle("Commons Attributes 2.1 Released");
        item.setLink("http://jakarta.apache.org/site/news/news-2004-2ndHalf.html#20040815.1");
        item.setDescription("The Apache Commons team is happy to announce the release of Commons Attributes 2.1. This is the first release of the new Commons-Attributes code.");
        channel.addItem(item);

        item = new Item();
        item.setTitle("Cloudscape Becomes Apache Derby");
        item.setLink("http://jakarta.apache.org/site/news/elsewhere-2004-2ndHalf.html#20040803.1");
        item.setDescription("IBM has submitted a proposal to the Apache DB project for a Java-based package to be called 'Derby'.");
        channel.addItem(item);

        item = new Item();
        item.setTitle("Commons BeanUtils 1.7 Released");
        item.setLink("http://jakarta.apache.org/site/news/news-2004-2ndHalf.html#20040802.1");
        item.setDescription("");
        channel.addItem(item);

        item = new Item();
        item.setTitle("Commons JXPath 1.2 Released");
        item.setLink("http://jakarta.apache.org/site/news/news-2004-2ndHalf.html#20040801.2");
        item.setDescription("");
        channel.addItem(item);

        /*  */
        return new Object[][] {
                { servletBean },
                { foo },
                { addressBook },
                { channel }
        };
    }

}
